import { IPSControlAttribute } from './ipscontrol-attribute';
import { IPSControlLogic } from './ipscontrol-logic';
import { IPSControlRender } from './ipscontrol-render';
import { IPSModelObject } from '../ipsmodel-object';

/**
 *
 * @export
 * @interface IPSControlItem
 */
export interface IPSControlItem extends IPSModelObject {
  /**
   * 部件注入属性集合
   *
   * @type {IPSControlAttribute[]}
   */
  getPSControlAttributes(): IPSControlAttribute[] | null;

  /**
   * 部件注入属性集合
   *
   * @type {IPSControlAttribute[]}
   */
  get psControlAttributes(): IPSControlAttribute[] | null;

  findPSControlAttribute(objKey: any): IPSControlAttribute | null;

  /**
   * 部件逻辑集合
   *
   * @type {IPSControlLogic[]}
   */
  getPSControlLogics(): IPSControlLogic[] | null;

  /**
   * 部件逻辑集合
   *
   * @type {IPSControlLogic[]}
   */
  get psControlLogics(): IPSControlLogic[] | null;

  findPSControlLogic(objKey: any): IPSControlLogic | null;

  /**
   * 部件绘制器集合
   *
   * @type {IPSControlRender[]}
   */
  getPSControlRenders(): IPSControlRender[] | null;

  /**
   * 部件绘制器集合
   *
   * @type {IPSControlRender[]}
   */
  get psControlRenders(): IPSControlRender[] | null;

  findPSControlRender(objKey: any): IPSControlRender | null;
}
